package edu.neumont.pro180._2009_q2.interfaces;

import java.util.Collection;

import edu.neumont.pro180._2009_q2.GamePieceMove;
import edu.neumont.pro180._2009_q2.Player;
import edu.neumont.pro180._2009_q2.Square;


public interface IGamePiece {
//	/**
//	 * Moves the piece to the Square indicated.
//	 * 
//	 * @param position
//	 *            The Square to move the piece to.
//	 */
//	public boolean setPosition(Square position);
	
	public int getValue();
	
	/**
	 * Gets the Square that the Checker is on.
	 * 
	 * @return The Square that the piece is currently located on.
	 */
	public Square getSquare();

	/**
	 * Get the set of Squares that the piece can move to.
	 * 
	 * @return The set of Squares that the piece can move to.
	 */
	public Collection<Square> getPossibleSquares();
	
	/**
	 * Gets the Move that will move the piece to the destination specified.
	 * @param destination where the piece will end up.
	 * @return the command that will accomplish the requested move.
	 */
	public GamePieceMove getMove(Square destination);
	
	/**
	 * Gets the Player that owns this piece.
	 * 
	 * @return the Player that owns this piece.
	 */
	public Player getPlayer();
	
	/**
	 * Sets the Square that the piece is on.
	 * @param s the Square to which to move the piece
	 * @return true if the move was successful, or false if the move was denied
	 */
	public boolean setPosition( Square s );
}
